/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Service;

import DB.HibernateUtil;
import DB.PagoBono;
import DB.PagoCheque;
import DB.PagoEfectivo;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
/**
 *
 * @author hernan
 */
@WebService(serviceName = "PagoWS")
public class PagoWS {
    
    @WebMethod(operationName = "agregarPagoBono")
    public boolean agregarPagoBono(@WebParam(name = "idCita") Long idCita,
    @WebParam(name = "fecha") String fecha, @WebParam(name = "hora") String hora, @WebParam(name = "numeroBono") String numeroBono, 
    @WebParam(name = "nombrePaciente") String nombrePaciente,@WebParam(name = "rutPaciente") String rutPaciente,
    @WebParam(name = "nombreProfesional") String nombreProfesional,@WebParam(name = "rutProfesional") String rutProfesional,
    @WebParam(name = "nroSesiones") String nroSesiones, @WebParam(name = "valorTotal") String valorTotal){
        PagoBono pb = new PagoBono();
        pb.setIdCita(idCita);
        pb.setFecha(fecha);
        pb.setHora(hora);
        pb.setNumeroBono(numeroBono);
        pb.setNombrePaciente(nombrePaciente);
        pb.setRutPaciente(rutPaciente);
        pb.setNombreProfesional(nombreProfesional);
        pb.setRutProfesional(rutProfesional);
        pb.setNroSesiones(nroSesiones);
        pb.setValorTotal(valorTotal);
        pb.setVisible(true);
        return ControladorDeObjetos.saveObject(pb);
    }

    @WebMethod(operationName = "listarPagoBono")
    public List<PagoBono> listarPagoBono() {
        return ControladorDeObjetos.getAllObjectByClassType(PagoBono.class);
    }
 
    @WebMethod(operationName = "cargarPagoBono")
    public Object cargarPagoBono(@WebParam(name = "id") Long id) {
        return ControladorDeObjetos.loadObjectByLongId(id, PagoBono.class);
    }
    
    @WebMethod(operationName = "modificarPagoBono")
    public boolean modificarPagoBono(PagoBono p){
        return ControladorDeObjetos.updateObject(p);
    }
    
    @WebMethod(operationName = "eliminarPagoBono")
    public boolean eliminarPagoBono(@WebParam(name = "id") Long id ){
        PagoBono pb = (PagoBono) ControladorDeObjetos.loadObjectByLongId(id, PagoBono.class);
        return ControladorDeObjetos.deleteObject(pb);
    }
        
    @WebMethod(operationName = "agregarPagoEfectivo")
    public boolean agregarPagoEfectivo(@WebParam(name = "idCita") Long idCita, @WebParam(name = "fecha") String fecha, 
    @WebParam(name = "hora") String hora, @WebParam(name = "nombresPaciente") String nombresPaciente,@WebParam(name = "rutPaciente") String rutPaciente,
    @WebParam(name = "nombresProfesional") String nombresProfesional,@WebParam(name = "rutProfesional") String rutProfesional,
    @WebParam(name = "nroSesiones") String nroSesiones,@WebParam(name = "nroBoleta") String nroBoleta,
    @WebParam(name = "valor") String valor){
        PagoEfectivo pe = new PagoEfectivo();
        pe.setIdCita(idCita);
        pe.setFecha(fecha);
        pe.setHora(hora);
        pe.setNombresPaciente(nombresPaciente);
        pe.setRutPaciente(rutPaciente);
        pe.setNombresProfesional(nombresProfesional);
        pe.setRutProfesional(rutProfesional);
        pe.setNumeroSesiones(nroSesiones);
        pe.setNumeroBoleta(nroBoleta);
        pe.setValor(valor);
        pe.setVisible(true);
        return ControladorDeObjetos.saveObject(pe);
    }

    @WebMethod(operationName = "listarPagoEfectivo")
    public List<PagoEfectivo> listarPagoEfectivo() {
        return ControladorDeObjetos.getAllObjectByClassType(PagoEfectivo.class);
    }
 
    @WebMethod(operationName = "cargarPagoEfectivo")
    public Object cargarPagoEfectivo(@WebParam(name = "id") Long id) {
        return ControladorDeObjetos.loadObjectByLongId(id, PagoEfectivo.class);
    }
    
    @WebMethod(operationName = "modificarPagoEfectivo")
    public boolean modificarPagoEfectivo(PagoEfectivo p){
        return ControladorDeObjetos.updateObject(p);
    }
    
    @WebMethod(operationName = "eliminarPagoEfectivo")
    public boolean eliminarPagoEfectivo(@WebParam(name = "id") Long id ){
        PagoEfectivo pb = (PagoEfectivo) ControladorDeObjetos.loadObjectByLongId(id, PagoEfectivo.class);
        return ControladorDeObjetos.deleteObject(pb);
    }
    
    @WebMethod(operationName = "agregarPagoCheque")
    public boolean agregarPagoCheque(@WebParam(name = "idCita") Long idCita, @WebParam(name = "fecha") String fecha, 
    @WebParam(name = "hora") String hora, @WebParam(name = "nombresPaciente") String nombresPaciente,@WebParam(name = "rutPaciente") String rutPaciente,
    @WebParam(name = "nombresProfesional") String nombresProfesional,@WebParam(name = "rutProfesional") String rutProfesional,
    @WebParam(name = "nroSesiones") String nroSesiones,@WebParam(name = "nroBoleta") String nroBoleta,
    @WebParam(name = "nroCheque") String nroChueque,@WebParam(name = "banco") String banco,
    @WebParam(name = "nominativo") String nominativo,@WebParam(name = "valor") String valor ,@WebParam(name = "cruzado") boolean cruzado){
        PagoCheque pe = new PagoCheque();
        pe.setIdCita(idCita);
        pe.setFecha(fecha);
        pe.setHora(hora);
        pe.setNombresPaciente(nombresPaciente);
        pe.setRutPaciente(rutPaciente);
        pe.setNombresProfesional(nombresProfesional);
        pe.setRutProfesional(rutProfesional);
        pe.setNumeroSesiones(nroSesiones);
        pe.setNumeroBoleta(nroBoleta);
        pe.setNumeroCheque(nroChueque);
        pe.setBanco(banco);
        pe.setNominativo(nominativo);
        pe.setValor(valor);
        pe.setCruzado(cruzado);
        pe.setVisible(true);
        return ControladorDeObjetos.saveObject(pe);
    }

    @WebMethod(operationName = "listarPagoCheque")
    public List<PagoCheque> listarPagoCheque() {
        return ControladorDeObjetos.getAllObjectByClassType(PagoCheque.class);
    }
 
    @WebMethod(operationName = "cargarPagoCheque")
    public Object cargarPagoCheque(@WebParam(name = "id") Long id) {
        return ControladorDeObjetos.loadObjectByLongId(id, PagoCheque.class);
    }
    
    @WebMethod(operationName = "modificarPagoCheque")
    public boolean modificarPagoCheque(PagoCheque p){
        return ControladorDeObjetos.updateObject(p);
    }
    
    @WebMethod(operationName = "eliminarPagoCheque")
    public boolean eliminarPagoCheque(@WebParam(name = "id") Long id ){
        PagoCheque pb = (PagoCheque) ControladorDeObjetos.loadObjectByLongId(id, PagoCheque.class);
        return ControladorDeObjetos.deleteObject(pb);
    }
    
    @WebMethod(operationName = "filtrarPagoBono")
    public List<PagoBono> filtrarPagoBono(@WebParam(name = "buscar") String buscar) {
        
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(PagoBono.class).add(
            Restrictions.or(
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("rutProfesional", "%" + buscar + "%"), 
                        Restrictions.ilike("nombreProfesional", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("rutPaciente", "%" + buscar + "%"), 
                        Restrictions.ilike("nombrePaciente", "%" + buscar + "%")
                    )
                ),
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("numeroBono", "%" + buscar + "%"), 
                        Restrictions.ilike("fecha", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("hora", "%" + buscar + "%"),
                        Restrictions.ilike("valorTotal", "%" + buscar + "%")
                    )
                )
            )
        );

        List l = c.list();
        s.close();
        return l;
    }

    @WebMethod(operationName = "filtrarPagoEfectivo")
    public List<PagoEfectivo> filtrarPagoEfectivo(@WebParam(name = "buscar") String buscar) {
        
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(PagoEfectivo.class).add(
            Restrictions.or(
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("rutProfesional", "%" + buscar + "%"), 
                        Restrictions.ilike("nombreProfesional", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("rutPaciente", "%" + buscar + "%"), 
                        Restrictions.ilike("nombrePaciente", "%" + buscar + "%")
                    )
                ),
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("numeroBoleta", "%" + buscar + "%"), 
                        Restrictions.ilike("fecha", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("hora", "%" + buscar + "%"),
                        Restrictions.ilike("valorTotal", "%" + buscar + "%")
                    )
                )
            )
        );

        List l = c.list();
        s.close();
        return l;
    }    
    
    @WebMethod(operationName = "filtrarPagoCheque")
    public List<PagoCheque> filtrarPagoCheque(@WebParam(name = "buscar") String buscar) {
        
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(PagoCheque.class).add(
            Restrictions.or(
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("rutProfesional", "%" + buscar + "%"), 
                        Restrictions.ilike("nombreProfesional", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("rutPaciente", "%" + buscar + "%"), 
                        Restrictions.ilike("nombrePaciente", "%" + buscar + "%")
                    )
                ),
                Restrictions.or(
                    Restrictions.or(
                        Restrictions.ilike("numeroBoleta", "%" + buscar + "%"), 
                        Restrictions.ilike("fecha", "%" + buscar + "%")
                    ),
                    Restrictions.or(
                        Restrictions.ilike("hora", "%" + buscar + "%"),
                        Restrictions.ilike("valorTotal", "%" + buscar + "%")
                    )
                )
            )
        );

        List l = c.list();
        s.close();
        return l;
    }    
}